The invention is in the field of computers and, in various embodiments, in the field of computer games.
Execution of computer programs can generally occur using one of two approaches. In one model the computer program is executed on a single device where input is received from a user, such as a game player, and program output is presented to the user. In the other model program execution occurs on a remote server under the control of one or more clients. A user provides inputs at the client and receives program output for display at the client. Communication between the client and the server takes place over a communication network, such as the internet.
It is possible that program execution can be distributed between both a client and a server. For example, in multiplayer video games it is common for a server to maintain a global state of a game based on inputs from many clients, and for each client to render separate video responsive to game rules and part of the global state. This requires that a software client of the video game be installed on the client.
FIG. 10 illustrates a prior art system for delivery of a video game. In this system streaming game video is generated at a Video Server P-110 and delivered to a Console P-120 via a Network P-130. Console P-120 is configured to receive the streaming video, decode the streaming video and provide the decoded video to a Display P-140. Console P-120 is also configured to receive inputs from a game player and send these inputs as game commands to Video Server P-110 where they are used to generate further streaming game video. The communication from Console P-120 to Video Server P-110 is via Network P-130. Console P-120 may be a personal computer or a dedicated game console.
Both the communications from Console P-120 to Video Server P-110 and from Video Server P-110 are performed using data packets. These data packets include an identifier of the sender and an address to which the packets are to be delivered. For example, a network address of Console P-120 may be included within data packets sent from Console P-120 to Video Server P-110 as the “sender” address. Likewise, the same network address of Console P-120 is included in data packets sent from Video Server P-110 to Console P-120. As such, data packets including the streaming game video and data packets including the game commands both include an address and/or identifier of Console P-120. Video Server P-110 does not send data packets addressed specifically to Controller P-150, or receive data packets address specifically as being from Controller P-150. Likewise, data packets sent by Console P-120 to Video Server P-110 do not include a network address specific to Controller P-150. More than one Controller P-150 can be directly coupled to Console P-120. Controller P-150 is configured for controlling the operation of Console P-120 by communicating directly with Console P-120, rather than for communicating to Video Server P-110.
Console P-120 is configured to both receive and decode data packets including streaming game video. Console P-120 is also configured to generate the data packets including the game commands that are sent to Video Server P-110. As such, Console P-120 serves as an endpoint for the communication of both of these types of data packets and both of these types of data packets include a network address of Console P-120. Console P-120 is distinguished from a mere router in that it processes game commands received from Controller P-150 and executes logic (e.g., computer code) based on the identity of the received game commands.